Skip to content

policy(validators): the contractile enforced Deno-only, blocking the Bun ruling - #78

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/validators-accept-bun
Aug 27, 2026
Merged

policy(validators): the contractile enforced Deno-only, blocking the Bun ruling#78
hyperpolymath merged 1 commit into
mainfrom
fix/validators-accept-bun

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Owner ruling 2026-08-27: migrate the validators first.

The collision

.machine_readable/MUST.contractile asserted:

(must "no npm/bun/yarn/pnpm dependencies — Deno only")

That names Bun itself as a prohibited dependency source. The estate-wide Bun ruling of 2026-08-26 requires package.json + bun.lock, so an agent obeying .claude/CLAUDE.md in this repo produced a change its own K9 validators reject.

CodeRabbit put it exactly: "These instructions can produce changes that fail repository validation."

This is why the repo was held out of the fleet rollout — the instruction and the enforcement disagreed, and an agent had no way to know which won.

The change

- (must "no npm/bun/yarn/pnpm dependencies — Deno only")
+ (must "JS deps via Bun — package.json + bun.lock; no npm/yarn/pnpm lockfiles")

The prohibition is preserved where it still applies — competing npm, yarn and pnpm lockfiles remain banned — and lifted only for Bun, which canon now mandates. A narrowing of the rule to match ratified policy, not its removal.

Sequencing

With this landed, the Bun policy change for this repo (#77) can follow without ever producing a self-contradictory state. That ordering is the point of the ruling: enforcement moves first, then the instruction that depends on it.

🤖 Generated with Claude Code

…Bun ruling

Owner ruling 2026-08-27: migrate the validators first.

MUST.contractile asserted:

    (must "no npm/bun/yarn/pnpm dependencies — Deno only")

which named Bun itself as a prohibited dependency source. The estate-wide Bun
ruling of 2026-08-26 requires package.json + bun.lock, so an agent obeying
.claude/CLAUDE.md in this repo produced a change its own K9 validators reject.
CodeRabbit put it exactly: "These instructions can produce changes that fail
repository validation."

That is why this repo was held out of the fleet rollout. The instruction and
the enforcement disagreed, and the agent had no way to know which won.

Now:

    (must "JS deps via Bun — package.json + bun.lock; no npm/yarn/pnpm lockfiles")

The prohibition is preserved where it still applies — competing npm, yarn and
pnpm lockfiles remain banned — and lifted only for Bun, which canon now
mandates. This is a narrowing of the rule to match ratified policy, not its
removal.

With this landed, the Bun policy change for this repo can follow without
producing a self-contradictory state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@gitar-bot

gitar-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: db0d38d3-f24c-4440-8583-b37dc56f76ff

📥 Commits

Reviewing files that changed from the base of the PR and between 5eac912 and 7b426c7.

📒 Files selected for processing (1)
  • .machine_readable/MUST.contractile

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: CodeQL
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: analyze (rust, none)
  • GitHub Check: analyze (actions, none)
🔇 Additional comments (1)
.machine_readable/MUST.contractile (1)

49-49: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated JavaScript and TypeScript dependency management requirements to support Bun.
    • Projects using Bun must include the required dependency manifest and lockfile.
    • npm, Yarn and pnpm lockfiles are no longer permitted.

Walkthrough

The dependency invariant now permits JavaScript dependencies managed by Bun. Projects must include package.json and bun.lock. npm, yarn, and pnpm lockfiles remain prohibited.

Changes

Dependency policy

Layer / File(s) Summary
Bun dependency invariant
.machine_readable/MUST.contractile
The invariant permits Bun-managed JavaScript dependencies with package.json and bun.lock. It prohibits npm, yarn, and pnpm lockfiles.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 7b426

This localized change aligns dependency validation with the required Bun workflow while preserving bans on competing lockfiles; no actionable merge-blocking risk remains after normal checks and review.

Poem

A rabbit checks the Bun lock tight
Dependencies hop in right
npm locks stay away
package.json leads the way
The invariant is clear and bright

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title identifies the Deno-only contractile rule and its conflict with the Bun ruling. It is related to the change, but it describes the previous blocking state rather than the rule update.
Description check ✅ Passed The description clearly explains the validator conflict, the Bun policy, the exact rule change, and the sequencing objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codacy-production codacy-production Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

The PR successfully updates the .machine_readable/MUST.contractile policy to allow Bun as a dependency manager. Codacy analysis indicates the changes are up to standards with no new quality issues. However, two significant concerns remain:

  • Verification Gap: There are no automated tests included to confirm that the validator correctly interprets these natural-language policy updates or that it rejects the prohibited package managers (npm, yarn, pnpm) as intended.
  • Lockfile Specification: The current policy explicitly requires bun.lock, which is a text-based format. This excludes the default binary bun.lockb format, potentially causing false negatives in automated enforcement for standard Bun projects.

About this PR

  • The PR does not include test cases to verify that the updated policy is correctly interpreted and enforced by the validators. There is a risk that the natural-language change may not be understood by the automated agents or tools relying on this file.

Test suggestions

  • Verify that a changeset containing a bun.lock and package.json passes the validator.
  • Verify that a changeset containing package-lock.json, yarn.lock, or pnpm-lock.yaml is still rejected.
Prompt proposal for missing tests
Consider implementing these tests if applicable:
1. Verify that a changeset containing a bun.lock and package.json passes the validator.
2. Verify that a changeset containing package-lock.json, yarn.lock, or pnpm-lock.yaml is still rejected.

TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback

(must "no new Python files")
(must "no new Go files")
(must "no npm/bun/yarn/pnpm dependencies — Deno only")
(must "JS deps via Bun — package.json + bun.lock; no npm/yarn/pnpm lockfiles")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM RISK

Suggestion: Bun's default lockfile is bun.lockb (binary), while bun.lock (text) is the format used in specific configurations. To ensure the policy remains robust and doesn't fail on the default binary format, consider including both extensions.

Suggested change
(must "JS deps via Bun — package.json + bun.lock; no npm/yarn/pnpm lockfiles")
(must "JS deps via Bun — package.json + bun.lock/bun.lockb; no npm/yarn/pnpm lockfiles")

@hyperpolymath
hyperpolymath merged commit bc4ae4c into main Aug 27, 2026
12 checks passed
@hyperpolymath
hyperpolymath deleted the fix/validators-accept-bun branch August 27, 2026 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant